/**
 * 
 */
package pms.controller;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import pms.dao.NotenDao;
import pms.om.Kategorie;
import pms.om.Musikstueck;
import pms.om.Noten;
import pms.om.Stimme;

/** 
 * Controller to generate the Home Page basics to be rendered by a view. 
 * It extends the convenience class AbstractController that encapsulates most 
 * of the drudgery involved in handling HTTP requests. 
/**
 * @author roman.zaglauer@googlemail.com
 *
 */
public class EditNoten extends AbstractController{
	private NotenDao notenDao;
	
	

	/** Getter
	 * @return the notenDao
	 */
	public NotenDao getNotenDao() {
		return notenDao;
	}



	/** Setter
	 * @param notenDao the notenDao to set
	 */
	public void setNotenDao(NotenDao notenDao) {
		this.notenDao = notenDao;
	}



	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest httpServletRequest,
			HttpServletResponse httpServletResponse) throws Exception {
		ModelAndView mv = new ModelAndView();
		try {
			int id = Integer.parseInt(httpServletRequest.getParameter("id"));
			// wenn id nicht geparsed werden kann, dann wird ein neues Objekt angelegt
			mv.addObject("title", "Notenbeschreibung bearbeiten");
			mv.addObject("message", "Ändern Sie die Bezeichnung der Noten und klicken Sie dann auf 'Änderungen übernehmen'.");
			mv.addObject("noten", notenDao.findById(id));
			
	//		Musikstueck aktmusikstueck = notenDao.getMusikstueckDao().findById(notenDao.findById(id).getMusikstuck().getId());
			
//			Musikstueck aktmusikstueck = notenDao.findById(id).getMusikstuck();
//			
//			List<Musikstueck> musikstueckliste = notenDao.getMusikstueckDao().findAll();
//			List<Musikstueck> musikstuecklistesort = new ArrayList<Musikstueck>();
//			musikstuecklistesort.add(aktmusikstueck);
//			
//			for (Musikstueck musikstueck : musikstueckliste) {
//				if (musikstueck.getId() != aktmusikstueck.getId()) {
//					musikstuecklistesort.add(musikstueck);
//				}
//			}
//			
//			mv.addObject("musikstuecke", musikstuecklistesort);
			
			int musikstueckid = Integer.parseInt(httpServletRequest.getParameter("musikstueckid"));
			mv.addObject("musikstueck", notenDao.getMusikstueckDao().findById(musikstueckid));
			
	
			
			
			Stimme aktstimme = notenDao.findById(id).getStimme();
			
			List<Stimme> stimmenliste = notenDao.getStimmeDao().findAll();
			List<Stimme> stimmenlistesort = new ArrayList<Stimme>();
			stimmenlistesort.add(aktstimme);
			
			for (Stimme stimme : stimmenliste) {
				if (stimme.getId() != aktstimme.getId()) {
					stimmenlistesort.add(stimme);
				}
			}
			mv.addObject("stimmen", stimmenlistesort);
			
		} catch (NumberFormatException e) {
			mv.addObject("title", "Neue Noten anlegen");
			mv.addObject("message", "Geben Sie eine Bezeichnung für der neuen Noten an und klicken Sie dann auf 'Änderungen übernehmen'.");
			mv.addObject("noten", new Noten(null, null, null));
		
//			mv.addObject("musikstuecke", notenDao.getMusikstueckDao().findAll());
			int musikstueckid = Integer.parseInt(httpServletRequest.getParameter("musikstueckid"));
			mv.addObject("musikstueck", notenDao.getMusikstueckDao().findById(musikstueckid));
			
			mv.addObject("stimmen", notenDao.getStimmeDao().findAll());
		}
		mv.setViewName("edit-note");
		return mv;
	}

}
